package com.vast.ui.component.factory;

import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;

import com.vast.ui.component.models.ItemArray;
import com.vast.ui.component.models.ItemPanel;
import com.vast.ui.component.providers.FullcolorledLabelProvider;
import com.vast.ui.component.providers.ItemContentProvider;
import com.vast.ui.component.providers.LedLabelProvider;

public class FullcolorledTableViewerFactory {
	Display display = null;


public static TableViewer createTableViewer(final Composite parent, final ItemPanel itemPanel, int numberOfColumn, int numberOfLine, int initialValue) {		
	// Set ContentProvider
	final TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
			| SWT.V_SCROLL | SWT.FULL_SELECTION);

	createColumns(viewer, numberOfColumn + 1);
	
	ItemArray itemArray;

	if(numberOfLine > 0) {
		for(int i = 0; i < numberOfLine; i++) {
			itemArray = new ItemArray(numberOfColumn, initialValue);
			itemPanel.add(itemArray);
		}
	}
	
	parent.getDisplay().asyncExec(new Runnable() {
		public void run() {
			// Set ContentProvider
			viewer.setContentProvider(new ItemContentProvider());
			
			// Set LabelProvider
			viewer.setLabelProvider(new FullcolorledLabelProvider(parent.getDisplay()));
			
			viewer.setInput(itemPanel);
		}
	});
	return viewer;
}

private static void createColumns(final TableViewer viewer, int numberOfColumn) {
	Table table = viewer.getTable();

	// Define Column
	for (int i = 0; i < numberOfColumn; i++) {
		TableViewerColumn column = new TableViewerColumn(viewer, SWT.CENTER);
		if(i%numberOfColumn ==0){	
			column.getColumn().setWidth(0);
		}else {
			column.getColumn().setText(Integer.toHexString(i-1));
			column.getColumn().setResizable(false);
			column.getColumn().setMoveable(false);
			column.getColumn().setWidth(24);
			//column.setEditingSupport(new IoEditingSupport(viewer, i-1));
		}
	}	
	table.setHeaderVisible(true);
	table.setLinesVisible(true);
}
}